package cn.tedu.hotel.service;

import cn.tedu.hotel.pojo.dto.RoomAddNewDTO;
import cn.tedu.hotel.pojo.vo.RoomListItemVO;
import cn.tedu.hotel.pojo.vo.RoomStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 *  处理房间业务的接口
 */
@Transactional
public interface IRoomService {

    /**
     *  添加房间
     * @param roomAddNewVO
     */
    void addNew(RoomAddNewDTO roomAddNewVO);

    /**
     *  根据id 删除房间数据
     * @param id
     */
    void deleteById(Long id);

    /**
     * 启用房间
     * @param id
     */
    void setEnable(Long id);

    /**
     *  禁用房间
     * @param id
     */
    void setDisable(Long id);

    /**
     *  设置房间状态为空闲
     * @param id
     */
    void setLeisure(Long id);

    /**
     *  设置房间状态为占用
     * @param id
     */
    void setOccupy(Long id);

    /**
     *  设置房间状态为异常
     * @param id
     */
    void setAbnormal(Long id);

    /**
     *  根据房间id 获取房间的详细信息
     * @param id 房间信息
     * @return
     */
    RoomStandardVO getStandardById(Long id);

    /**
     *  查询房间列表
     * @return
     */
    List<RoomListItemVO> listRoom();

    /**
     *  加载房间数据到缓存中
     */
    void loadRoomToCache();


}
